<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * session 验证session是否失效，
 * 如果失效的不通过，即不能执行后续的操作
 *
 */
class Sesslib {
	var $CI;
	function __construct()
	{
		
		//不以cookies存储session
		//@ini_set("session.use_cookies", 0);
		//@ini_set("session.gc_maxlifetime", 7200);//存活2小时
		//启动session
		//@session_start();
		//header('Content-type:text/xml');// 向浏览器输出 xml
		global $class, $method; 
		$this->CI = & get_instance();
		//加载xmllib,为了调用error_xml,提示错误信息
		$this->CI->load->library('xmllib');
		//加载配置文件，即不需要登录即可访问的页面
		$this->CI->config->load('anonymity_access');
		
		$this->CI->load->library('deslib');
//$hello = $this->CI->deslib->encrypt('hello|world');
//echo $hello . '<br />';
//echo $this->CI->deslib->decrypt($hello);

		if($class != 'test' && !$this->check_client())
		{
			header('Content-type:text/xml');// 向浏览器输出 xml
			echo $this->CI->xmllib->error_xml('不允许的操作！');
			exit;
		}
		

		if ($this->CI->config->item('anonymity_urls')) {
			//是否显示错误信息
			$error = TRUE;
			foreach ($this->CI->config->item('anonymity_urls') as $k=>$v) {
				//如果不是排除在外的页面
				if ($v[0] == strtolower($class) && $v[1] == strtolower($method)) {
					$error = FALSE;
					break;
				}
			}
			
			if ($error) {
				$token = $this->CI->input->post('token');
				if(!$token){
					header('Content-type:text/xml');// 向浏览器输出 xml
					echo $this->CI->xmllib->error_xml('您的身份验证已经失效，请重新登录！');
					exit;
				}
				
				$this->CI->db->select('count(*) count');
				$query = $this->CI->db->get_where('user', array('token' => $token));
				$row = $query->row_array();
				if(empty($row) || !isset($row['count']) || $row['count'] == 0){
					header('Content-type:text/xml');// 向浏览器输出 xml
					echo $this->CI->xmllib->error_xml('您的身份验证已经失效，请重新登录！');
					exit;
				}
			}
		}
			
	}
	
	function check_client()
	{
		$imei = $this->CI->input->post('imei');
		$imei_ua = $this->CI->input->post('imei_ua');
		if(!$imei || !$imei_ua){
			//为空
			//echo $CI->xmllib->error_xml('您的身份验证无效，请重新登录！');
			//exit;
			return false;
		}
		
		//解密比对
		$imei_de = $this->CI->deslib->decrypt($imei);
		$imei_ua_de = $this->CI->deslib->decrypt($imei_ua);
		if(!$imei_de || !$imei_ua_de) return false;
		//拆分 $imei_u_de
		$imei_ua_arr = @explode('|', $imei_ua_de, 2);
		if(empty($imei_ua_arr) || !$imei_ua_arr[0]){
			//为空
			//echo $CI->xmllib->error_xml('您的身份验证无效，请重新登录！');
			//exit;
			return false;
		}

		return $imei_de == $imei_ua_arr[0];

		
	}
	
	
}